package com.gxa.common.utils;

import org.springframework.util.FileCopyUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

public class UploadUtil {

    /**
     * 上传图片文件的工具类
     *
     * @param multipartFile 上传文件类型的对象
     * @param str           存放文件的子目录
     * @return 返回存放位置对应的url地址，使用前先判断是否为null
     */
    public static String myUpload(MultipartFile multipartFile, String str) {
        // //判断图片数据是否从前端传来
        // if (multipartFile.isEmpty()) {
        //     throw new NoSuchFieldException("multipartFile为空");
        // } else {
        //自定义保存图片的路径位置
        String uploadPath = "/usr/image" + File.separator + str + File.separator;
        //根据自定义路径，创建存储照片对应的文件夹
        File file = new File(uploadPath);
        if (!file.exists()) {
            file.mkdirs();
        }

        //获取图片对象名(此处可自定义)
        String multipartName = multipartFile.getOriginalFilename();
        String day = new SimpleDateFormat("yyyyMMddhhmmsss").format(new Date());
        int i = new Random().nextInt(100);
        String fileName = day + i + multipartName;
        //在服务器上创建文件
        File newFile = new File(uploadPath + fileName);
        String url = newFile.toString();
        //上传图片到服务器
        try {
            FileCopyUtils.copy(multipartFile.getBytes(), newFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return url;
    }
}
